# 设置CMake的最低版本要求
cmake_minimum_required(VERSION 3.10)

# 设置项目名称和版本
project(test_stl VERSION 1.0)

# 设置C++编译器的标准，比如 C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 获取PROJECT_SOURCE_DIR的上层目录
# 获取当前CMakeLists.txt文件的绝对路径
get_filename_component(CURRENT_LIST_DIR ${CMAKE_CURRENT_SOURCE_DIR} PATH)

# 获取上一级目录
get_filename_component(PARENT_DIR "${CURRENT_LIST_DIR}" PATH)

message(STATUS "Current directory of PROJECT_SOURCE_DIR is: ${CURRENT_LIST_DIR}")
message(STATUS "Parent directory of PROJECT_SOURCE_DIR is: ${PARENT_DIR}")

# 添加头文件搜索路径
include_directories(
        ${PARENT_DIR}/inc
        # 如果需要，可以添加其他头文件目录
)

# 添加源文件目录
file(GLOB_RECURSE SOURCE_FILES
        #utility
        "${PARENT_DIR}/src/utility/option.cpp"
        "${PARENT_DIR}/src/utility/value.cpp"
        "${PARENT_DIR}/src/utility/ini_file.cpp"
        "${PARENT_DIR}/src/utility/logger.cpp"
        "${PARENT_DIR}/src/utility/singleton.cpp"

        #stl
        "${PARENT_DIR}/src/stl/vector.h"

        #测试
        #utility
        #        "${PARENT_DIR}/test/utility/test_option.cpp"
        #        "${PARENT_DIR}/test/utility/test_value.cpp"
        #        "${PARENT_DIR}/test/utility/test_ini_file.cpp"
        #        "${PARENT_DIR}/test/utility/test_logger.cpp"
        #        "${PARENT_DIR}/test/utility/test_singleton.cpp"

        #stl
        "${PARENT_DIR}/test/stl/test_vector.cpp"

        # 根据需要添加其他类型的源文件
)

# 添加可执行文件目标
add_executable(test_stl ${SOURCE_FILES})
#
## 如果你的项目依赖外部库，添加库文件搜索路径和链接指令
## 例如，假设你依赖Boost库
#find_package(Boost REQUIRED COMPONENTS system filesystem)
#include_directories(${Boost_INCLUDE_DIRS})
#target_link_libraries(MyCPlusPlusProject PRIVATE ${Boost_LIBRARIES})
#
## 启用测试，如果项目包含测试
#enable_testing()
#add_test(NAME MyTest COMMAND MyCPlusPlusProject)
#
## 安装规则（如果需要）
#install(TARGETS MyCPlusPlusProject DESTINATION bin)
#install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include)
## 根据需要添加其他安装指令
#
## 设置构建类型（Debug, Release等）
#set(CMAKE_BUILD_TYPE Debug)

# 自定义编译选项（如果需要）
# add_compile_options(-Wall -Wextra)

# 其他CMake指令...